% 变量顺序：C4 C3, C2, C1, A4 A3, A2, A1
x0 = [2, 2, 2, 2, -0.5, 0.25, -0.8, 0.5];  % 初始猜测
opts = optimoptions('fmincon','Algorithm','sqp','Display','iter','TolCon',1e-10);
f = @(x) max(x) - min(x);  % 目标：极差最小
x_opt = fmincon(f, x0, [],[], [],[], [],[], @mycons, opts);

C4 =x_opt(1); C3=x_opt(2); C2=x_opt(3); C1=x_opt(4);
A4 =x_opt(5); A3=x_opt(6); A2=x_opt(7); A1=x_opt(8);

d0 = 1 ;
d1 = A4*C4-4;
d2 = A3*C3*C4 -3*A4*C4 +6;
d3 = A2*C2*C3*C4 - 2*A3*C3*C4 + 3*A4*C4 - 4;
d4 = A1*C1*C2*C3*C4 - A2*C2*C3*C4 + A3*C3*C4 - A4*C4 +1;
fprintf('  c4 = %05f;\n  c3 = %05f;\n  c2 = %05f;\n  c1 = %05f;\n  a4 = %05f;\n  a3 = %05f;\n  a2 = %05f;\n  a1 = %05f;\n  b1 = %05f;\n',C4,C3,C2,C1,A4,A3,A2,A1,(d0+d1+d2+d3+d4)/(C1*C2*C3*C4));
% disp(x_opt);

% 相等约束
function [c, ceq] = mycons(x)
  C4 =x(1); C3=x(2); C2=x(3); C1=x(4);
  A4 =x(5); A3=x(6); A2=x(7); A1=x(8);
  d0 = 1 ;
  d1 = A4*C4-4;
  d2 = A3*C3*C4 -3*A4*C4 +6;
  d3 = A2*C2*C3*C4 - 2*A3*C3*C4 + 3*A4*C4 - 4;
  d4 = A1*C1*C2*C3*C4 - A2*C2*C3*C4 + A3*C3*C4 - A4*C4 +1;
  ceq = [
         d0 - (1.0000 );
         d1 - (-1.88525936969883);
         d2 - (1.63053007762002 );
         d3 - (-0.667897236243253);
         d4 - (0.109584667752121 )];
  c = [];
  % disp((d0+d1+d2+d3)/(C1*C2*C3));
end




% c4 = 0.730816;
% c3 = 0.258192;
% c2 = 0.190274;
% c1 = 0.190136;
% a4 = 0.730690;
% a3 = 0.730816;
% a2 = 0.554266;
% a1 = 0.190434;
% b1 = 0.190434;






